package reconhecimento.util;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.imageio.ImageIO;

import reconhecimento.model.Imagem;

public class LeituraImagensBitmap {

	public static byte[][] lerImagem(final String arquivo, final String valor)
			throws FileNotFoundException {
		byte result[][] = null;

		try {
			BufferedImage buffer = ImageIO.read(new File("./imagens/" + valor + "/" + arquivo));
			int altura = buffer.getHeight();
			int largura = buffer.getWidth();
			result = new byte[altura][largura];

			for (int x = 0; x < largura; x++) {
				for (int y = 0; y < altura; y++) {
					result[y][x] = (byte) ((buffer.getRGB(x, y) == -1) ? 0 : 1);
				}
			}
		} catch (IOException e1) {
			e1.printStackTrace();
		}

		return result;
	}

	public static List<Imagem> lerImagens(final String arquivo,
			final Integer valor, final int largura, final int altura)
			throws FileNotFoundException {
		final List<Imagem> result = new ArrayList<Imagem>(); 
		
		try {
			byte[][] imagem = null;
			for(File dir : new File("./imagens/").listFiles()) {
				for (File file : dir.listFiles()) {
					imagem = lerImagem(file.getName(), dir.getName());
					result.add(new Imagem(imagem[0].length, imagem.length, imagem,
							Integer.parseInt(dir.getName())));
				}
			}

		 } catch (IOException e1) {
			e1.printStackTrace();
		}

		return result;
	}

	public static void main(String[] args) throws FileNotFoundException {
//		for (Imagem img : lerImagens(null, 0, 0, 0)) {
//			System.out.println(img.getValor());
//			System.out.println(img);
//			System.out.println("---");
//		}
		long start = new Date().getTime();
		System.out.println(lerImagens(null, 0, 0, 0).size());
		long end= new Date().getTime();
		System.out.println((end - start) + " milisegundos");
	}
}
